/**
 * Author: 笨蛋超人不会飞
 * Date:  22:25
 */
public class question_122 {
}
class Solution_122 {
    public int maxProfit(int[] prices) {
//        这道题是购买股票的升级版，之前的121只能买入一次，卖出一次，但是这个是可以多次买入和卖出，但是同一时间手中只能有一个股票
//        我做这道题的思路是采用贪心的算法，就是按在每一个转折点做买入和卖出的交易，就考虑局部的利益最大化来实现总体的利益最大化
//        tf变量用来表示当前手中是否有股票
        boolean tf=false;
        int max_profit=0;
        int buy_in_index=0;
        for (int i = 0; i < prices.length-1; i++) {
            if(prices[i]<prices[i+1]){
//                再不买第二天就要涨价了，所以这个时候购入
                buy_in_index=i;
                tf=true;
                break;
            }
//            如果整个数列都是递减的情况，直接return 0；
            if(i== prices.length-2){
                return 0;
            }
        }
        for (int i =buy_in_index+1; i < prices.length-1; i++) {
            if(tf){
//                说明当前手头是有股票的，这个时候我要找的就是下个点要降价的转折点，也就是再不卖就亏了
                if(prices[i]>prices[i+1]){
                    max_profit+=prices[i]-prices[buy_in_index];
//                    表示股票已经卖出
                    tf=false;
                }
            }else{
                if(prices[i]<prices[i+1]){
                    //                tf为假，这个时候我要买入，这个时候我要找的就是下个点要升了，也就是再不买就要涨价了
                    buy_in_index=i;
                    tf=true;
                }
            }
        }
//        考虑最后一个点
        if(tf){
            if(prices[buy_in_index]<prices[prices.length-1]){
                max_profit+=prices[prices.length-1]-prices[buy_in_index];
            }
        }
//        没有股就不管它
        return max_profit;

    }
}












